
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>为什么不推荐在 MySQL 中直接存储图片、视频等内容？ - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>为什么不推荐在 MySQL 中直接存储图片、视频等内容？ - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">对于需要在MySQL数据库中管理的大容量文件（如图片、视频），推荐的最佳实践是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">最佳实践是将大文件存储在专门的文件存储系统中（如分布式文件系统、对象存储服务等），而在数据库中仅存储文件的元数据，例如文件的路径或URL。这种设计可以将数据存储与管理分开，提高系统的灵活性和扩展性。</div>
          </div>
          <div class="card-source">来源: 4. 数据库设计和应用架构 - 分离存储</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">为什么将大文件直接存储在MySQL的BLOB字段中会导致性能下降？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">主要有两个原因：首先，每次读写这些大文件时，数据库需要处理大量数据，会显著增加其负担；其次，大文件的存在会增加数据表的大小，影响针对结构化数据设计的索引和查询优化机制，从而降低查询效率。</div>
          </div>
          <div class="card-source">来源: 1. 性能问题 - 存储与检索效率</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">直接在数据库中存储大文件会引发哪些主要的存储管理问题？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">主要会引发两个问题：一是“数据库膨胀”，即数据库体积迅速增大，增加了管理、备份和恢复的难度与成本；二是“磁盘碎片”，存储大量大文件可能导致磁盘碎片化，从而影响磁盘性能，使读写操作变得低效。</div>
          </div>
          <div class="card-source">来源: 2. 存储管理 - 数据库体积 和 数据库碎片</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">影响</div>
          <div class="card-question">在MySQL中存储大文件对数据库的备份和恢复流程有何具体影响？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">影响</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">存储大文件会显著增加备份文件的体积，导致备份过程耗时更长。相应地，在恢复数据库时，处理这些嵌入的大文件也会使恢复过程变得更加复杂和耗时，可能引发更多问题。</div>
          </div>
          <div class="card-source">来源: 3. 备份与恢复 - 备份时间 和 恢复复杂性</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">文档中提到了哪些专门用于替代数据库来存储大文件的专业化服务或系统？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文档提到了专门的文件存储系统，例如分布式文件系统和对象存储服务。具体的商业服务例子包括 AWS S3 和 Google Cloud Storage，这些服务专为高效存储和访问大文件而设计。</div>
          </div>
          <div class="card-source">来源: 4. 数据库设计和应用架构 - 文件存储服务</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">实践</div>
          <div class="card-question">在采用分离存储方案时，数据库表结构通常如何设计以关联到外部文件？请举例说明。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">实践</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">数据库表通常只存储文件的元数据，如URL或文件路径。例如，可以创建一个名为 `images` 的表，其中包含一个 `image_url` 字段（类型为 `VARCHAR(255)`），用于存放指向外部文件存储系统中对应文件的URL，如 'https://www.ts.com/mybucket/image.jpg'。</div>
          </div>
          <div class="card-source">来源: 5. 示例 - 存储文件的方案</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
